Software resource management

ABSTRACT

The disclosed technology provides a multiapplication workflow engine. The multiapplication workflow engine includes a request processing engine, a multiapplication workflow configuration manager, and a multiapplication workflow execution engine. The request processing engine is configured to receive instructions to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the operations and an interface definition corresponding to each of the operations. The interface defintions of each operation are defined so that operations that execute successively have compatible interface definitions. The multiapplication workflow configuration manager is configured to instatiate one or more applications that satisfy the interface definition and the functionality definition for each operation in a protected execution environment, where the applications are configured to communicate via compatible interfaces. The multiapplication workflow engine is configured to execute the multiapplication workflow in the protected execution environment.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims benefit of priority to U.S. Provisional Patent Application No. 62/564,888, entitled “Vertical and Horizontal Solutions for Hardware/Software Resources Management” and filed on Sep. 28, 2017, which is specifically incorporated by reference herein for all that it discloses and teaches.

BACKGROUND

Individual applications running on computing devices are often “sandboxed” separately for security reasons. Sandboxing allows an application to run on a computing device without allowing the application to have access to the resources of the computing device without explicit permission. Additionally, other applications on the computing device do not have access to the resources of the first application without explicit permission. Accordingly, the computing device is protected from damage caused by an untrusted application. However, when applications run in their own sandboxes, it is difficult for the applications to effectively work together without significant user involvement.

SUMMARY

In at least one implementation, the disclosed technology provides a multiapplication workflow engine including one or more computing processors and a request processing engine configured to receive instruction to execute a multiapplication workflow via the one or more computing processors. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponds to each operation being defined such that operations that are executed successively have compatible interface definitions. A multiapplication workflow configuration manager is configured to instantiate one or more applications executed by the one or more computing processors. The one or more applications satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The one or more applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow. A multiapplication workflow execution engine is configured to execute the multiapplication workflow via the one or more computing processors in the protected execution environment. Data being passed among the one or more applications through the compatible interfaces.

This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

Other implementations are also described and recited herein.

BRIEF DESCRIPTIONS OF THE DRAWINGS

FIG. 1 illustrates example computing environments for launching a multiapplication workflow.

FIG. 2 illustrates an example computing environment for executing a multiapplication workflow.

FIG. 3 illustrates an example computing environment for selecting applications to include in a chosen multiapplication workflow.

FIG. 4 illustrates an example computing environment for executing a multiapplication workflow on a computing device.

FIG. 5 illustrates example operations to initiate a multiapplication workflow.

FIG. 6 illustrates example operations for the execution of an example multiapplication workflow.

FIG. 7 illustrates an example system that may be useful in implementing the described technology.

DETAILED DESCRIPTIONS

Currently, individual applications on some computing devices are executed in a “sandbox,” meaning that each individual application has its own temporary memory. Additionally, an application executed in a sandbox cannot directly access the system resources and user data of the computing device. Further, other applications running on the same computing device cannot access the first application running in the sandbox. While sandboxed execution is beneficial for security, it can be inefficient when a user wants to execute a procedure that requires input from multiple applications. For example, a user may wish to use optical character recognition (OCR) to convert the text in a photo to text format, and then to send that text via e-mail. When each application is sandboxed, the user acts as an intermediary between the applications, e.g., by manually launching an OCR application and selecting the photo from the photo browser and by manually inserting text output from the OCR application into an e-mail application.

A multiapplication workflow allows applications to communicate with each other through a shared memory. The applications still cannot access the system resources or the user data of the computing device, so the multiapplication workflow does not jeopardize the security of the computing device. However, the multiapplication workflow allows for a more efficient use of resources because the applications in the multiapplication workflow can interact more easily. For example, when the multiapplication workflow uses a shared memory, the applications use memory more efficiently and memory fragmentation may be improved.

FIG. 1 illustrates example computing environments 102, 104 for launching a multiapplication workflow. In this example environment, the multiapplication workflow is launched from a photo browsing application 106. A user may be viewing a photo 108 with text and want to send the text in the photo 108 as an e-mail. Without a multiapplication workflow, the user would need to launch (e.g., instantiate or spawn a thread for) an OCR application, select the photo from the memory of the computing device, and manually input text into an e-mail application (e.g., by copying and pasting text from the OCR application into a new e-mail.) In an example implementation with a multiapplication workflow, the user may enter a query 110 into the photo browsing application 106 or some other search service or catalog to search for a multiapplication workflow that could convert the text in the photo to a text file and send the text in the body of an e-mail. For example, in computing environment 102, the user enters the query 110 “photo text to e-mail” into the photo browsing application 106. In response to the query 110, the photo browsing application 106 may display a list 112 of available multiapplication workflows that may fulfill the user's needs.

Once the list 112 of available multiapplication workflows populates, the user may choose which multiapplication workflow would best accomplish the task that the user wants to accomplish. A description 114 may be available to provide the user with additional information to choose the correct multiapplication workflow. For example, description 114 states that the multiapplication workflow “OCR to e-mail” uses optical character recognition (OCR) to convert the text in a photo to text and send the text in an e-mail. After reading the description 114, the user may select the OCR to e-mail multiapplication workflow to send the text in the photo 108 as an e-mail. Such description may also include, without limitation, a cost for applications not owned by the user, installation status of certain applications, or updates available for applications already owned by the user.

Though this example provides a multiapplication workflow for sending text in a photo as an e-mail, a variety of multiapplication workflows may exist for accomplishing a variety of tasks. For example, other multiapplication workflows may allow a user to take a photo of text with a camera built into a computing device and convert the text to a word processing document. Another example multiapplication workflow may allow a user to check traffic and send an e-mail with their estimated time of arrival at a specific destination. Many other multiapplication workflows may be created, deployed, and/or executed.

The example environments 102 and 104 show one method of launching a multiapplication workflow through an application. In other implementations, the multiapplication workflow may be launched in a different way. For example, one implementation provides an index of multiapplication workflows available in a store or catalog that the user may search to find a multiapplication workflow with the user's desired functionality. In another implementation, the user may store favorite multiapplication workflows on the computing device. The stored multiapplication workflows may then be launched directly by, for example, menus on the computing device or icons on the computing device's home screen or as an extension in another application.

FIG. 2 illustrates an example computing environment 200 for executing a multiapplication workflow. The example computing environment 200 shows a user interface after a user has executed a multiapplication workflow to convert the text of a photo 208 to an e-mail. The computing environment 200 includes both a photo browsing application 206 and an e-mail application 216. Though several applications are included in the multiapplication workflow, the user may not need to interact with each application individually to produce the desired result. For example, the multiapplication workflow used to convert the text in the photo 208 to the text 218 in the e-mail application 216 may use other applications with OCR to parse the text in the photo 208 to text 218 in the e-mail application 216. However, the user may interact with the photo browsing application 206 and the e-mail application 216 but need not interact with an additional OCR application.

In some implementations, the user may interact with additional applications or interfaces either before the execution of the multiapplication workflow or during execution of the multiapplication workflow. For example, the multiapplication workflow may receive permission from the user to install additional applications on the user's computing device. In other implementations, the user may make selections in applications in the multiapplication workflow before receiving the final product of the multiapplication workflow.

FIG. 3 illustrates an example computing environment 300 for selecting applications to include in a chosen multiapplication workflow. In this implementation, an OCR to e-mail multiapplication workflow 320 is launched from a photo browsing application 306. In response to a user inquiry, a list 312 populates with several multiapplication workflows that may satisfy the needs of the user. In FIG. 3, the list 312 populates with the OCR to e-mail multiapplication workflow 320, an e-mail to photo multiapplication workflow 322, and a text to e-mail multiapplication workflow 324. After the list 312 is populated with options, the user may choose the multiapplication workflow that best fits the user's needs. In FIG. 3, the user would choose the OCR to e-mail multiapplication workflow 320.

In other implementations, the user may launch a multiapplication workflow from a different location. For example, in one implementation, the user may access and search a database including a catalog of multiapplication workflows instead of launching a multiapplication workflow from an already opened application. In another implementation, the user may save multiapplication workflows on the memory of a computing device and may access a multiapplication workflow directly from the computing device. In yet another implementation, a multiapplication workflow may launch automatically from the computing device without any input from the user.

Once a multiapplication workflow has been selected the multiapplication workflow is populated with applications to perform the operations defined by the multiapplication workflow. A multiapplication workflow includes several operations, with each operation being a sequential (or possibly, parallel) step in the overall process performed by the multiapplication workflow. For example, the OCR to e-mail multiapplication workflow 320 includes a photo viewing operation 326, an OCR operation 328, and an e-mail operation 330. Each operation is fulfilled by at least one application.

To determine which application or applications to place in each operation, the multiapplication workflow defines each operation by an interface definition and a functionality definition. The interface definition specifies the input and/or output characteristics of an operation, including, without limitation, any one of Application Programming Interface (API), file type, data type, etc. For example, the OCR operation 328 may have an interface definition that defines the input capability by the ability to receive files in at least a .pdf file format and defines the output capability by the ability to output in plain text. The interface definition of each application in the multiapplication workflow is defined partially based on the interface definitions of the other applications in the multiapplication workflow to ensure compatible interface definitions. Compatibility means that applications that execute successively in the multiapplication workflow can communicate with each other through shared memory, shared file types, data types, API, or other interapplication communication means. In the described technology, the term “successively” is used with reference to the sequential execution of the multiapplication workflow—an application and the application that follows it in the sequence of the multiapplication workflow are executed successively. For example, in the OCR to e-mail multiapplication workflow 320, if the OCR operation 328 has an interface definition defining the output of the OCR operation 328 as plain text, the e-mail operation 330 has a compatible interface definition when the interface definition of the e-mail operation 330 defines the input of the e-mail operation 330 as plain text.

The functionality definition specifies what functionality the application should have to perform the function designated by an operation. For example, the OCR operation 328 may have a functionality definition for an application that has OCR capabilities. The functionality definition may include both mandatory functionalities and optional functionalities. Mandatory functionality specifies functionality that is necessary to execute the multiapplication workflow. Optional functionality defines functionality that is desirable in an application, but not necessary to execute the multiapplication workflow as it is designed. Optional functionality is discussed in more detail with respect to FIG. 5.

The OCR to e-mail multiapplication workflow 320 searches for applications to fulfill the interface definition and functionality definition for each operation defined by the OCR to e-mail multiapplication workflow 320. Each operation may have one or multiple applications that meet the interface definition and functionality definition of the operation. The OCR to e-mail multiapplication workflow 320 may rank applications that fulfill both the interface definition and functionality definition to determine which application to include in each operation. For example, the photo viewing operation 326 may have a functionality definition for a user interface that allows for viewing photos and an interface definition for the ability to output photos in a .pdf format. The photo browsing application 306 that the user is using to launch the OCR to e-mail multiapplication workflow 320 may meet both the functionality definition and the interface definition for the photo viewing operation 326. The computing device may have a second photo browsing application 332 stored in memory that meets both the functionality definition and the interface definition for the photo viewing operation 326. The photo browsing application 306 may be ranked ahead of the second photo browsing application 332 because the user launched the OCR to e-mail multiapplication workflow 320 from the photo browsing application 306. Accordingly, the photo browsing application 306 is included in the OCR to e-mail multiapplication workflow 320.

In other implementations, a variety of criteria may be used to rank applications to determine which application to include in a multiapplication workflow when multiple applications meet the functionality definition and the interface definition for a given operation. Applications that include optional functionality may be included over applications that meet only the functionality definition for a given operation. Other factors, for example, without limitation, the price of an application, the file size of an application, or the developer identity, may be used to decide which applications to include in a multiapplication workflow. In some implementations, the user may be prompted to decide which application to include when several applications meet both the functionality definition and the interface definition for a given operation within a multiapplication workflow.

When searching for applications to fulfill the functionality definition and the interface definition for a given operation, a catalog of indexed applications may be searched when an application fitting the functionality definition and the interface definition is not already installed on the computing device. For example, an OCR application 334 fitting the functionality definition and the interface definition of the OCR operation 328 may be already downloaded to the computing device. Therefore, the indexed catalog of applications need not be searched for more applications that fit the functionality definition and the interface definition of the OCR operation 328 and the OCR application 334 is included in the OCR to e-mail multiapplication workflow 320. However, the catalog of indexed applications may still be searched to determine whether another application is available that may better fit the multiapplication workflow by, for example, having desired optional functionality or more recent software updates.

In contrast, there may be no applications on the computing device that fulfill the functionality definition and the interface definition for the e-mail operation 330. After searching the catalog of indexed applications, there may be an e-mail application 336, a second e-mail application 338, and a third e-mail application 340 that all fulfill the functionality definition and the interface definition for the e-mail operation 330. In one implementation, the user may be prompted to choose which application to include and may choose the e-mail application 336 to include in the OCR to e-mail multiapplication workflow 320. Because the e-mail application 336 is not already installed on the computing device, the e-mail application 336 may be downloaded and installed on the computing device prior to the execution of the OCR to e-mail multiapplication workflow 320.

While each operation in the OCR to e-mail multiapplication workflow 320 is executed by one application, in other implementations, multiple applications may be used to obtain the functionality definition and the interface definition for a single operation. Multiple applications may be used to fulfill one operation when one application does not fulfill the functionality definition and the interface definition for the operation, but a combination of applications can be used to fulfill the functionality definition and the interface definition.

FIG. 4 illustrates an example computing environment 400 for executing a multiapplication workflow on a computing device 402. An OCR to e-mail multiapplication workflow 420 includes a shared memory 442 that can be accessed by all of the applications in the OCR to e-mail multiapplication workflow 420. In this implementation, the OCR to e-mail multiapplication workflow 420 includes a photo browsing application 406, an OCR application 434, and an e-mail application 436. The photo browsing application 406, the OCR application 434, and the e-mail application 436 are all able to access the shared memory 442 to share information without having access to system resources 444 and user data 446 of the computing device 402. The system resources 444 may include a processor, main memory, or other resources. The photo browsing application 406, the OCR application 434, and the e-mail application 436 are located within a protected execution environment, meaning that the applications do not have access to the system resources 444 and user data 446. Further, in the protected execution environment, other applications running outside of the protected execution environment do not have access to the resources and data of the applications located within the protected execution environment. Therefore, the OCR to e-mail multiapplication workflow 420 maintains the security of the computing device 402 while still allowing for collaboration between applications using the shared memory 442. Further, because many redundant steps may be eliminated by a multiapplication workflow, the procedure performed by the multiapplication workflow is executed faster and with less memory use than executing the same procedure with individually sandboxed applications. In other implementations, the applications may communicate using compatible interfaces via an API accessible to the applications executing within the protected execution environment.

Before execution of the OCR to e-mail multiapplication workflow 420, the photo browsing application 406, the OCR application 434, and the e-mail application 436 are instantiated within the protected execution environment (e.g., launched, spawned in a thread, created) and ordered in accordance with execution order positions provided by the OCR to e-mail multiapplication workflow 420. For example, the applications are ordered so that first, the photo browsing application 406 executes and passes data to the shared memory 442. Second, the OCR application 434 receives data from the shared memory 442, executes, and passes additional data to the shared memory 442. Third, the e-mail application 436 receives data from the shared memory 442 and executes. In some implementations, some applications in a multiapplication workflow may execute in parallel instead of sequentially. For example, if the user wanted to send a screenshot of the photo from the photo browsing application 406, a screenshot application may execute at the same time as the OCR application 434. The screenshot application and the OCR application 434 would both receive input from the photo browsing application 406 and would both send output to the e-mail application 436. As such, the screenshot application and the OCR application 434 would execute in parallel and would be ordered to execute in parallel.

The shared memory 442 provides an access point for each application but does not convert data types. As such, the execution order positions provided by the OCR to e-mail application workflow provide compatibility between the applications. For example, the photo browsing application 406 passes data 448 in a .pdf format to the shared memory 442. The OCR application 434 receives the data 448 from the shared memory 442 in a .pdf format. Therefore, the photo browsing application 406 and the OCR application 434 are compatible. Each of the photo browsing application 406, the OCR application 434, and the e-mail application 436 may have a data input interface and a data output interface that may be associated with the shared memory 442 before execution of OCR to e-mail multiapplication workflow 420.

In some implementations, the applications may communicate by means other than being directly communicatively connected to a shared memory. For example, each application could execute in a workflow wrapper that could take advantage of a supervisory application within a protected execution environment.

FIG. 5 illustrates example operations 500 to initiate a multiapplication workflow. A new multiapplication workflow is created by a query from the computing device 502 to a catalog of indexed applications 504. For example, the query may be:

CreateWorkflow(“DigArc”)

After the multiapplication workflow is initiated, in a requesting operation 506, the computing device 502 requests a list of locally stored photo viewing, OCR, and e-mail applications from the catalog of indexed applications 504. The request may be communicated by a query such as:

DigArc.Features(photo, ocr, email)

In a returning operation 508, the catalog of indexed applications 504 returns a list of locally stored photo viewing, OCR, and e-mail applications. When, for example, the computing device has two photo browsing applications and one e-mail application stored locally, but does not have an OCR application stored locally, the returning operation 508 may communicate:

photo.Applist=[photos, picbrowse], email.Applist=[Mail], OCR.Applist=Empty

After receiving a list of local applications, the computing device 502 communicates with the catalog of indexed applications 504 to determine which apps to include in the multiapplication workflow. In one example, there are two photo browsing applications and one e-mail application stored locally on the computing device 502, but no locally stored OCR application. To determine which of the two locally stored photo browsing applications to include in the multiapplication workflow, the computing device 502 first queries the catalog of indexed applications 504 for photo browsing applications with a functionality definition in a query operation 510. For example, if the functionality definition includes mandatory functionality of photo viewing through a user interface and optional functionality of photo editing, the query from the computing device 502 to the catalog of indexed applications 504 may be, for example:

photo. QueryInterface(Mandatory=UI, Optional=Photo Edit)

In response to the query operation 510, the catalog of indexed applications 504 returns a list of locally stored photo viewing applications that meet the functionality definition in a second returning operation 512. Where both of the locally stored applications meet both the mandatory and optional functionality, the return list may be, for example:

photo.Applist=[photos, picbrowse]

In a selection operation 514, the computing device 502 communicates which photo browsing app to include in the multiapplication workflow. In this example, two photo browsing apps meet the functionality definition for a photo browsing app. To determine which of the two photo browsing applications to include, in one implementation, the computing device 502 may receive input from a user to determine which application to include. In other implementations, there may be additional criteria to assist the computing device in the determination. For example, the computing device may give preference to applications from specific developers, applications that the user opens more often, or applications with higher user ratings in the application database. Here, if the computing device 502 determines that it will include the “photos” application in the multiapplication workflow, the communication may be:

photo.AppSelect=photos

In a second selection operation 516, the computing device 502 communicates which e-mail application to include in the multiapplication workflow. Here, there is no additional determination because there is only one e-mail application stored locally on the computing device 502. The second selection operation may communicate:

email.AppSelect=mail

In this implementation, preference is given to applications that are stored locally on the computing device 502. In other implementations, the user may be given a choice to download additional applications that may also fulfill the functionality definition.

In a second query operation 518, the computing device 502 queries the catalog of indexed applications 504 for applications that fulfill the functionality definition for an OCR application that are available for download from the catalog of indexed applications 504. Where the functionality definition includes mandatory OCR functionality and an optional UI, the query may be:

ocr.FindStoreApp(Mandatory, Optional), Mandatory=OCR, Optional=UI

In a third returning operation 520, the catalog of indexed applications 504 returns a list of applications with the mandatory functionality and returns indication of whether the applications listed also include the optional functionality. Here, there may be two applications with OCR capability, where only one application also has a UI. The application database 504 would give three returns:

ocr.StoreAppList=[eRealOCR, PaperMaster]

eRealOCR.Mandatory=OCR, eRealOCR.Optional=No UI

PaperMaster.Madatory=OCR, PaperMaster.Optional=Has UI

In a third selection operation 522, the computing device 502 selects the OCR application that has both the mandatory and optional functionality. Here, the computing device 502 would select the application by sending the following communication:

ocr.AppSelect=PaperMaster

After the computing device 502 communicates its selection, the catalog of indexed applications 504 sends the selected application to the computing device 502 in a downloading operation 524. FIG. 5 illustrates operations for selecting applications to include in a multiapplication workflow based on a functionality definition. An interface definition may also be used to select applications to include in a multiapplication workflow. When the interface definition is used, the query operations 510 and 518 include an additional query to search for applications that meet the interface definition. The return operation 520 would then include applications that meet the functionality definition and the interface definition.

FIG. 6 illustrates example operations 600 for the execution of an example multiapplication workflow. In a launching operation 644, a user 602 communicates a request to launch a photo browsing application 606. The user may then launch the OCR to e-mail multiapplication workflow from the photo browsing application 606. Once the OCR to e-mail multiapplication workflow has been launched, the photo browsing application 606 sends a photo to the shared memory 642 in a sending operation 646. In a second sending operation 648, the shared memory 642 then sends the photo to an OCR application 634. In a converting operation 650, the OCR application 634 converts the received photo to text. The OCR application 634 then sends the text to the shared memory 642 in a third sending operation 652. Next, the shared memory 642 sends the text to an e-mail application 636 in a fourth sending operation 654.

FIG. 7 illustrates an example computing system 700 that may be useful in implementing the described technology. The computing system 700 may be a client device such as a laptop, mobile device, desktop, tablet, or a server/cloud device. The computing system 700 includes one or more processor(s) 702, and a memory 704. The memory 704 generally includes both volatile memory (e.g., RAM) and non-volatile memory (e.g., flash memory). An operating system 710 resides in the memory 704 and is executed by the processor(s) 702.

One or more application programs 712 modules or segments, such as a multiapplication workflow engine 740 are loaded into the memory 704 and/or storage 720 and executed by the processor(s) 702. The application programs 712 or modules may include the multiapplication workflow engine 740 implemented by a request processing engine 744, application selection engine 746, multiapplication workflow configuration manager 748, multiapplication workflow execution engine 750 etc. which may be embodied in instructions stored in the memory 704 and/or storage 720 and executed by the processor(s) 702. Data such as user preferences, hardware configurations, hardware responses, etc. may be stored in the memory 704 or storage 720 and may be retrievable by the processor(s) 702 for use by the multiapplication workflow engine 740, the request processing engine 744, the application selection engine 746, the multiapplication workflow configuration manager 748, the multiapplication workflow execution engine 750, etc. The storage 720 may be local to the computing system 700 or may be remote and communicatively connected to the computing system 700 and may include another server. The storage 720 may store resources that are requestable by client devices (not shown). In some implementations, the application programs 712, the multiapplication workflow engine 740, the request processing engine 744, the application selection engine 746, the multiapplication workflow configuration manage 748, and/or the multiapplication workflow execution engine 750 may reside in or execute as part of the operating system 710. For example, the multiapplication workflow engine 740 may involve printer drivers or other resources that also reside in or execute within the operating system 710.

The computing system 700 includes a power supply 716, which is powered by one or more batteries or other power sources and which provides power to other components of the computing system 700. The power supply 716 may also be connected to an external power source that overrides or recharges the built-in batteries or other power sources.

The computing system 700 may include one or more communication transceivers 730 which may be connected to one or more antenna(s) 732 to provide network connectivity (e.g., mobile phone network, Wi-Fi®, Bluetooth®, etc.) to one or more other servers and/or client devices (e.g., mobile devices, desktop computers, or laptop computers). The computing system 700 may further include a network adapter 736, which is a type of communication device. The computing system 700 may use the adapter and any other types of communication devices for establishing connections over a wide-area network (WAN) or local-area network (LAN). It should be appreciated that the network connections shown are exemplary and that other communications devices and means for establishing a communications link between the computing system 700 and other devices may be used.

The computing system 700 may include one or more input devices 734 such that a user may enter commands and information (e.g., a keyboard or mouse). These and other input devices may be coupled to the server by one or more interfaces 738 such as a serial port interface, parallel port, universal serial bus (USB), etc. The processing system 700 may further include a display 722 such as a touch screen display.

The computing system 700 may include a variety of tangible processor-readable storage media and intangible processor-readable communication signals. Tangible processor-readable storage can be embodied by any available media that can be accessed by the computing system 700 and includes both volatile and nonvolatile storage media, removable and non-removable storage media. Tangible processor-readable storage media excludes intangible communications signals and includes volatile and nonvolatile, removable and non-removable storage media implemented in any method or technology for storage of information such as processor-readable instructions, data structures, program modules or other data. Tangible processor-readable storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other tangible medium which can be used to store the desired information and which can be accessed by the processing system 700. In contrast to tangible processor-readable storage media, intangible processor-readable communication signals may embody processor-readable instructions, data structures, program modules or other data resident in a modulated data signal, such as a carrier wave or other signal transport mechanism. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, intangible communication signals include signals traveling through wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.

An example multiapplication workflow engine is provided. The multiapplication workflow engine includes one or more computing processors, a request processing engine, a multiapplication workflow configuration manager, and a multiapplication workflow execution engine. The request processing engine is configured to receive an instruction to execute a multiapplication workflow via the one or more computing processors. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The multiapplication workflow configuration manager is configured to instantiate one or more applications executed by the one or more computing processors, the one or more applications satisfying the interface definition and functionality definition for each of the two or more operations in a protected execution environment, the one or more applications each being configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow. The multiapplication workflow execution engine is configured to execute the multiapplication workflow via the one or more computing processors in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.

An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, further including a shared memory inaccessible to applications not executing within the protected execution environment of the multiapplication workflow. The compatible interfaces are configured for communication through the shared memory accessible to the applications executing in the protected execution environment.

An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the multiapplication workflow configuration manager associates a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.

An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the multiapplication workflow engine includes an application programming interface inaccessible to applications not executing within the protected execution environment of the multiapplication workflow. The compatible interfaces are configured for communication through the application programming interface accessible to the one or more applications executing in the protected execution environment.

An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the multiapplication workflow engine includes an application selection engine configured to search a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.

An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the application selection engine selects one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.

An example multiapplication workflow engine of any previous multiapplication workflow engine is provided, wherein the request processing engine receives an instruction to execute the multiapplication workflow and each functionality definition provided by the multiapplication workflow includes one or more mandatory functionalities and one or more optional functionalities.

An example method includes receiving instruction to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The example method further includes instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and are ordered in accordance with execution order positions provided by the multiapplication workflow. The example method further includes executing the multiapplication workflow in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.

An example method of any previous method is provided, wherein the compatible interfaces are configured for communication through a shared memory accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.

An example method of any previous method includes associating a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.

An example method of any previous method is provided, wherein the compatible interfaces are configured for communication through an application programming interface accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.

The method of any previous method further includes searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.

The method of any previous method further includes selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.

The method of any previous method is provided, wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.

An example system includes means for receiving instruction to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The example system further includes means for instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and are ordered in accordance with execution order positions provided by the multiapplication workflow. The example system further includes means for executing the multiapplication workflow in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.

An example system of any preceding system is provided, wherein the compatible interfaces are configured for communication through a shared memory accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.

An example system of any preceding system includes means for associating a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.

An example system of any preceding system is provided, wherein the compatible interfaces are configured for communication through an application programming interface accessible to the applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.

An example system of any preceding system includes means for searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.

An example system of any preceding system includes means for selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.

An example system of any preceding system is provided, wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.

Example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a computing device a process for receiving instruction to execute a multiapplication workflow. The multiapplication workflow defines two or more operations and provides a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations. The interface definition corresponding to each operation is defined such that operations that are executed successively have compatible interface definitions. The process further includes instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment. The applications are each configured to communicate via compatible interfaces defined by the compatible interface definitions and are ordered in accordance with execution order positions provided by the multiapplication workflow. The process further includes executing the multiapplication workflow in the protected execution environment. Data is passed between the one or more applications through the compatible interfaces.

Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process wherein the compatible interfaces are configured for communication through a shared memory accessible to the one or more applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.

Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process including associating a data input interface and a data output interface of each of the selected applications with the shared memory.

Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.

Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process including searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.

Another example one or more tangible processor-readable storage media are embodied with instructions for executing on one or more processors and circuits of a device a process of any preceding process including selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.

Some implementations may comprise an article of manufacture. An article of manufacture may comprise a tangible storage medium to store logic. Examples of a storage medium may include one or more types of computer-readable storage media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. Examples of the logic may include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, operation segments, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. In one implementation, for example, an article of manufacture may store executable computer program instructions that, when executed by a computer, cause the computer to perform methods and/or operations in accordance with the described embodiments. The executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The executable computer program instructions may be implemented according to a predefined computer language, manner or syntax, for instructing a computer to perform a certain operation segment. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.

The implementations described herein are implemented as logical steps in one or more computer systems. The logical operations may be implemented (1) as a sequence of processor-implemented steps executing in one or more computer systems and (2) as interconnected machine or circuit modules within one or more computer systems. The implementation is a matter of choice, dependent on the performance requirements of the computer system being utilized. Accordingly, the logical operations making up the implementations described herein are referred to variously as operations, steps, objects, or modules. Furthermore, it should be understood that logical operations may be performed in any order, unless explicitly claimed otherwise or a specific order is inherently necessitated by the claim language. 

What is claimed is:
 1. A multiapplication workflow engine comprising: one or more computing processors; a request processing engine configured to receive instruction to execute a multiapplication workflow via the one or more computing processors, the multiapplication workflow defining two or more operations and providing a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations, the interface definition corresponding to each operation being defined such that operations that are executed successively have compatible interface definitions; a multiapplication workflow configuration manager configured to instantiate one or more applications executed by the one or more computing processors, the one or more applications satisfying the interface definition and functionality definition for each of the two or more operations in a protected execution environment, the one or more applications each being configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow; and a multiapplication workflow execution engine configured to execute the multiapplication workflow via the one or more computing processors in the protected execution environment, data being passed between the one or more applications through the compatible interfaces.
 2. The multiapplication workflow engine of claim 1 further comprising: a shared memory inaccessible to applications not executing within the protected execution environment of the multiapplication workflow, the compatible interfaces being configured for communication through the shared memory accessible to the one or more applications executing in the protected execution environment.
 3. The multiapplication workflow engine of claim 2, wherein the multiapplication workflow configuration manager is further configured to associate a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.
 4. The multiapplication workflow engine of claim 1, further comprising: an application programming interface inaccessible to applications not executing within the protected execution environment of the multiapplication workflow, the compatible interfaces being configured for communication through the application programming interface accessible to the one or more applications executing in the protected execution environment.
 5. The multiapplication workflow engine of claim 1, further comprising: an application selection engine configured to search a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
 6. The multiapplication workflow engine of claim 5, wherein the application selection engine is further configured to select one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.
 7. The multiapplication workflow engine of claim 1, wherein the request processing engine is further configured to receive an instruction to execute the multiapplication workflow, each functionality definition being provided by the multiapplication workflow including one or more mandatory functionalities and one or more optional functionalities.
 8. A method comprising: receiving instruction to execute a multiapplication workflow, the multiapplication workflow defining two or more operations and providing a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations, the interface definition corresponding to each operation being defined such that operations that are executed successively have compatible interface definitions; instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment, the one or more applications each configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow; and executing the multiapplication workflow in the protected execution environment, data being passed between the one or more applications through the compatible interfaces.
 9. The method of claim 8, wherein the compatible interfaces are configured for communication through a shared memory accessible to the one or more applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
 10. The method of claim 9, further comprising: associating a data input interface and a data output interface of each of the instantiated applications with the shared memory provided by the multiapplication workflow.
 11. The method of claim 8, wherein the compatible interfaces are configured for communication through an application programming interface accessible to the one or more applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
 12. The method of claim 8, further comprising: searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
 13. The method of claim 12, further comprising: selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications.
 14. The method of claim 8, wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.
 15. One or more tangible processor-readable storage media embodied with instructions for executing on one or more processors and circuits of a computing device a process comprising: receiving instruction to execute a multiapplication workflow, the multiapplication workflow defining two or more operations and providing a functionality definition corresponding to each of the two or more operations and an interface definition corresponding to each of the two or more operations, the interface definition corresponding to each operation being defined such that operations that are executed successively have compatible interface definitions; instantiating one or more applications that satisfy the interface definition and functionality definition for each of the two or more operations in a protected execution environment, the one or more applications each configured to communicate via compatible interfaces defined by the compatible interface definitions and being ordered in accordance with execution order positions provided by the multiapplication workflow; and executing the multiapplication workflow in the protected execution environment, data being passed between the one or more applications through the compatible interfaces.
 16. The one or more tangible processor-readable storage media of claim 15, wherein the compatible interfaces are configured for communication through a shared memory accessible to the one or more applications executing in the protected execution environment and inaccessible to applications not executing within the protected execution environment of the multiapplication workflow.
 17. The one or more tangible processor-readable storage media of claim 16, wherein the process further comprises: associating a data input interface and a data output interface of each of the selected applications with the shared memory.
 18. The one or more tangible processor-readable storage media of claim 15, wherein each functionality definition includes one or more mandatory functionalities and one or more optional functionalities.
 19. The one or more tangible processor-readable storage media of claim 15, wherein the process further comprises: searching a catalog of indexed applications for one or more applications that satisfy the interface definition and the functionality definition for each of the two or more operations.
 20. The one or more tangible processor-readable storage media of claim 15, wherein the process further comprises: selecting one or more applications that satisfy the interface definition and the functionality definition corresponding to each of the two or more operations from the catalog of indexed applications. 